export default class mayEvent {
    constructor(){
        //保存不同事件对应的函数
        //一个事件名可能绑定有多个函数，所以用数组保存该事件名对应的函数
        // {myClick: [fn1 , fn2 , fn3] , myTest: [fn1 , fn2 , fn3]}
        this.handers = {}
    }

    //给指定的事件绑定函数 ， 收集不同事件对应的函数
    on(eventName , hander){
        //如果事件对应的数组不存在 则表示第一次绑定事件 初始化一个数组
        if(!Array.isArray(this.handers[eventName])){
            this.handers[eventName] = []
        }
        //如果是数组则 把事件插入
        this.handers[eventName].push(hander)
    }

    //触发指定事件 对应的函数 ， 并传参
    emit(eventName , data){
        //判断当前触发的事件有没有对应的函数
        const hander = this.handers[eventName]
        //如果是数组就说明当前事件有对应的函数 ， 则遍历调用所以的函数并传参
        if(Array.isArray(hander)){
            hander.forEach((item) => {
                //调用并传参
                item(data)
            })
        }
    }
}